Indy TCPServer - Tipy Triky c. 678
Otázka od: Pavel Poles
11. 12. 2002 14:14
Zdravim,
mam trochu problem s Indy TCP serverem. Dle knizky Tipy a triky pro delphi,
trik c. 678 se snazim udelat jednoduchy prenos souboru. strana serveru je
treba
jen takto jednoducha:
procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
var
FStream: TFileStream;
begin
fStream.Create('c:\kuk.bat',fmOpenRead or fmShareDenyNone);
Athread.Connection.WriteLn('Hallo world');
Athread.Connection.OpenWriteBuffer;
Athread.Connection.WriteStream(fStream);
Athread.Connection.CloseWriteBuffer;
FreeAndNil(fStream);
AThread.Connection.Disconnect;
end;
Na strane serveru po spusteni mi vznika vyjimka EAccessVioaltion za radkem
WriteStream, ale neni to pravidlem, nekdy uz i za radkem WriteLn.
Pouzivam port 20 a z klienta se pripojuju na 127.0.0.1:20
Netusite nekdo kde je chyba?
Pavel Poles
Odpovedá: ing. Jan Fiala
11. 12. 2002 14:26
11.12.2002 Pavel Poles:
> mam trochu problem s Indy TCP serverem. Dle knizky Tipy a triky pro delphi,
> trik c. 678 se snazim udelat jednoduchy prenos souboru. strana serveru je
> treba
> jen takto jednoducha:
> procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
> var
> FStream: TFileStream;
> begin
> fStream.Create('c:\kuk.bat',fmOpenRead or fmShareDenyNone);
> Athread.Connection.WriteLn('Hallo world');
> Athread.Connection.OpenWriteBuffer;
> Athread.Connection.WriteStream(fStream);
> Athread.Connection.CloseWriteBuffer;
> FreeAndNil(fStream);
> AThread.Connection.Disconnect;
> end;
> Na strane serveru po spusteni mi vznika vyjimka EAccessVioaltion za radkem
> WriteStream, ale neni to pravidlem, nekdy uz i za radkem WriteLn.
> Pouzivam port 20 a z klienta se pripojuju na 127.0.0.1:20
> Netusite nekdo kde je chyba?
Stream oteviras pro cteni - viz fmOpenRead a pokousis se do nej
zapisovat.
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
Odpovedá: Pavel Poles
11. 12. 2002 15:24
Do streamu se nepokousim zapsat. Funkce WriteStream ma parametr Astream,
ktery by mel byt potomke TStream (coz TFileStream je), a tento stream vezme,
PRECTE a da ho do bufferu. Funkce do streamu NEZAPISUJE.
PS: stejne sem to radsi zkusil a nefunguje to
Pavel Poles
> 11.12.2002 Pavel Poles:
> > mam trochu problem s Indy TCP serverem. Dle knizky Tipy a triky pro
delphi,
> > trik c. 678 se snazim udelat jednoduchy prenos souboru. strana serveru
je
> > treba
> > jen takto jednoducha:
>
> > procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
> > var
> > FStream: TFileStream;
> > begin
> > fStream.Create('c:\kuk.bat',fmOpenRead or fmShareDenyNone);
> > Athread.Connection.WriteLn('Hallo world');
> > Athread.Connection.OpenWriteBuffer;
> > Athread.Connection.WriteStream(fStream);
> > Athread.Connection.CloseWriteBuffer;
> > FreeAndNil(fStream);
> > AThread.Connection.Disconnect;
> > end;
>
> > Na strane serveru po spusteni mi vznika vyjimka EAccessVioaltion za
radkem
> > WriteStream, ale neni to pravidlem, nekdy uz i za radkem WriteLn.
> > Pouzivam port 20 a z klienta se pripojuju na 127.0.0.1:20
>
> > Netusite nekdo kde je chyba?
>
> Stream oteviras pro cteni - viz fmOpenRead a pokousis se do nej
> zapisovat.
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
>
>